package com.yq.core.base.service;

import com.yq.core.util.Page;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 信  息: [yiqnuan] [2016-05-04] [1.2]
 * 描  述: 基础 Service 接口
 */
public interface BaseService<T, PK extends Serializable> {

    Class getEntity();
    /**
     * 根据ID获取实体对象
     * @param id
     * @return
     */
    T findUniqueById(PK id);
    /**
     * 根据条件获取实体对象
     * @param parameters
     * @return
     */
    T findUniqueBy(Map<String, Object> parameters);
    /**
     * 根据主键获取 Map 对象
     * @param id
     * @return
     */
    Map<String, Object> findMapUniqueById(String id);
    /**
     * 根据条件获取 Map 对象
     * @param parameters
     * @return
     */
    Map<String, Object> findMapUniqueBy(Map<String, Object> parameters);
    /**
     * 保存
     * @param t
     * @return ID
     */
    PK insert(T t);
    /**
     * 根据对象更新
     * @param t
     */
    void update(T t);
    /**
     * 根据条件更新，可批量更新
     * @param parameters
     */
    //public void update(Map<String, Object> parameters);

    /**
     * 查询
     * @param parameters
     * @param page
     */
    Page<T> paging(Map<String, Object> parameters, Page page);

}
